/*
 * 
 */
package client.controller;

import java.awt.Point;
import view.MapeiaTabuleiro;

public class CalculoPosicao {

    private int numJogador; // guarda o numero do jogador(cliente) no tabuleiro
    private MapeiaTabuleiro mapaTabuleiro = MapeiaTabuleiro.getInstance();

    // faz calculo no peao no tabuleiro
    public Point calculo(int numJogador, Point p, int valorDado) {
        int i;
        Point ptoAux = null;
        int valorDadoAux;

        i = mapaTabuleiro.getIndicePontoVirtual(p);
        valorDadoAux = valorDado;
        
        while (valorDadoAux > 0) {
            if (p.equals(new Point(0, 7)) && numJogador == 1) {
                return mapaTabuleiro.getPontoVirtual(72 + (valorDadoAux - 1));
            } else if (p.equals(new Point(7, 14)) && numJogador == 2) {
                return mapaTabuleiro.getPontoVirtual(77 + (valorDadoAux - 1));
            } else if (p.equals(new Point(14, 7)) && numJogador == 3) {
                return mapaTabuleiro.getPontoVirtual(82 + (valorDadoAux - 1));
            } else if (p.equals(new Point(7, 0)) && numJogador == 4) {
                return mapaTabuleiro.getPontoVirtual(87 + (valorDadoAux - 1));
            }
            
            ptoAux = mapaTabuleiro.getPontoVirtual(i + valorDado);
            
            valorDadoAux--;
        }
        
        return ptoAux;
    }

    // faz calculo e retorna posição virtual para o peão ir da base para o tabuleiro,
    // a partir do número do jogador indicado
    public Point calculoBaseParaTabuleiro(int numJogador) {
        switch (numJogador) {
            case 1:
                return new Point(1, 8);

            case 2:
                return new Point(8, 13);

            case 3:
                return new Point(13, 6);

            case 4:
                return new Point(6, 1);
        }
        return null;
    }

    // verifica se o peão está na faixa de segurança (reta final para entrar no centro)
    public boolean verificaFaixaSeguranca(Point p) {

        return false;
    }

    // Metodo que calcula posicao na reta em direção ao triangulo central. Não implementado ainda
    public Point calculoFaixaSeguranca(int numJogador, int valorDado, Point p) {
        int i, j, valorDadoAux;
        Point pontoAux = null;

        j = mapaTabuleiro.getIndicePontoVirtual(p);
        valorDadoAux = valorDado;

        switch (numJogador) {
            case 1:
                i = 72;

                while (valorDadoAux > 0) {


                    j++;
                    pontoAux = mapaTabuleiro.getPontoVirtual(j);



                    if (pontoAux.equals(new Point(0, 7))) {
                        while (valorDadoAux > 0) {
                        }
                    }
                    valorDadoAux--;
                }

                break;

            case 2:
                i = 77;
                break;

            case 3:
                i = 82;
                break;

            case 4:
                i = 87;
                break;
        }

        return null;
    }
}
